執行的時候有兩個地方要注意,一個是資料型態必須是data.frame(我平常都會轉成tibble看資料比較方便),另外一個就是你要改變的參數必須是一種factor,這兩個不轉不給使用SMOTE()
train_smote <- SMOTE(fraud_ind ~ ., as.data.frame(fraud_train), perc.over = 20000, perc.under=100)
然後SMOTE()的perc.over 跟 perc.under我覺得超級莫名其妙的啊哈哈。
perc.over = a 表示較少的變量變成原来的(1+a/100)倍
perc.under= b 表示較多的變量變成少變量的 b/100 * (a/100) 倍
也就是說 如果我今天只是想要把較少的資料變成跟較多的資料差不多,我必須...
par = table(data$fraud_ind)[1]/table(data$fraud_ind)[2]
#知道差距幾倍
我的perc.over = a 必須是1+a/100 = par
a = (par - 1)*100
我的perc.over = b 必須是b/100 * (a/100) = par
b = par / (100 / a )*100 = par * a = par * (par - 1)*100
我的理解應該沒錯吧(?